{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "step 0, train accuracy 0.853\n",
      "step 1, train accuracy 0.933\n",
      "step 2, train accuracy 0.959\n",
      "step 3, train accuracy 0.979\n",
      "step 4, train accuracy 0.975\n",
      "step 5, train accuracy 0.979\n",
      "step 6, train accuracy 0.978\n",
      "step 7, train accuracy 0.984\n",
      "step 8, train accuracy 0.993\n",
      "step 9, train accuracy 0.993\n",
      "step 10, train accuracy 0.999\n",
      "step 11, train accuracy 0.996\n",
      "step 12, train accuracy 0.99\n",
      "step 13, train accuracy 0.999\n",
      "step 14, train accuracy 0.999\n",
      "step 15, train accuracy 0.997\n",
      "step 16, train accuracy 0.999\n",
      "step 17, train accuracy 0.999\n",
      "step 18, train accuracy 1\n",
      "step 19, train accuracy 0.996\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#定义加载数据的函数，注意训练数据的存储位置\n",
    "def load_carDats():\n",
    "    import cv2\n",
    "    import os\n",
    "    file_path = './TrainImages/'\n",
    "    files = os.listdir(file_path)\n",
    "    samples = []\n",
    "    for file_name in files:\n",
    "        data = cv2.imread(file_path + file_name, 0).reshape(-1) / 255\n",
    "        label = 0 if file_name.split('-')[0] == 'neg' else 1\n",
    "        samples.append((data, label))\n",
    "    return samples\n",
    "#加载数据\n",
    "datas = load_carDats()\n",
    "#随机打乱数据\n",
    "np.random.shuffle(datas)\n",
    "#划分数据，xs、ys 用来训练网络，x_test、y_test 用来测试网络训练效果\n",
    "xs = [i[0] for i in datas[:1000]]\n",
    "ys = np.reshape([i[1] for i in datas[:1000]], newshape=(-1,1))\n",
    "x_test = [i[0] for i in datas[1000:]]\n",
    "y_test = np.reshape([i[1] for i in datas[1000:]], newshape=(-1,1))\n",
    "\n",
    "#----------------定义网络中频繁使用的函数，将其重构-----------------#\n",
    "#权重变量\n",
    "def weight_variables(shape):\n",
    "    weights = tf.truncated_normal(shape, stddev=0.1, dtype=tf.float32)\n",
    "    return tf.Variable(weights)\n",
    "\n",
    "#偏置变量\n",
    "def biase_variables(shape):\n",
    "    biases = tf.constant(value=1.0, shape=shape)\n",
    "    return tf.Variable(biases)\n",
    "\n",
    "#卷积\n",
    "def conv2d(x, W):\n",
    "    '''计算卷积，x为输入层（shape=[-1,width,height,channel]）,\n",
    "    W为f*f的共享权重矩阵shape=[f,f,in_layers_num, out_layers_num]，\n",
    "    水平和垂直方向上的步长都为1'''\n",
    "    return tf.nn.conv2d(x, W, strides=[1,1,1,1], padding=\"VALID\")\n",
    "\n",
    "#最大值池化\n",
    "def max_pooling(x):\n",
    "    '''计算最大值混合，x为输入层(一般是卷积结果)shape=[-1,width,height,channels]\n",
    "    ksize为混合pooling的核大小2*2，水平和垂直方向上的步长都为2'''\n",
    "    return tf.nn.max_pool(x, ksize=[1,2,2,1], strides=[1,2,2,1], padding=\"VALID\")\n",
    "\n",
    "#---------------------网络前向传播部分------------------#\n",
    "def deepnn(x, keep_prop):\n",
    "    '''定义深层卷积网络，包含了两个卷积-混合层和三个卷积层'''\n",
    "    #step1:将原始一维得得数据转换成2维, 第一个表示样本数，第二三个是行列，最后一个是通道数\n",
    "#     x = tf.reshape(x, shape=[-1, 40, 100, 1])\n",
    "    #step2:定义第一的卷积-混合层\n",
    "    with tf.name_scope(\"conv-pooling1\"):\n",
    "        W_conv1 = weight_variables([5,5,1,6])\n",
    "        b_conv1 = biase_variables([6])\n",
    "        ret_conv1 = tf.nn.relu(conv2d(x,W_conv1) + b_conv1)  #计算卷积，并使用修正单元对卷积结果进一步处理\n",
    "        ret_pooling1 = max_pooling(ret_conv1)  #执行混合操作\n",
    "\n",
    "    #step3:定义第二个卷积-混合层\n",
    "    with tf.name_scope(\"conv-pooling2\"):\n",
    "        W_conv2 = weight_variables([5,5,6,16])\n",
    "        b_conv2 = biase_variables([16])\n",
    "        ret_conv2 = tf.nn.relu(conv2d(ret_pooling1, W_conv2) + b_conv2)\n",
    "        ret_pooling2 = max_pooling(ret_conv2)\n",
    "\n",
    "    #step4:定义第三个卷积层\n",
    "    with tf.name_scope(\"conv-pooling3\"):\n",
    "        W_conv3 = weight_variables([5,5,16,32])\n",
    "        b_conv3 = biase_variables([32])\n",
    "        ret_conv3 = tf.nn.relu(conv2d(ret_pooling2, W_conv3) + b_conv3)\n",
    "\n",
    "    #step5:定义第四个卷积层\n",
    "    with tf.name_scope(\"conv4\"):\n",
    "        W_conv4 = weight_variables([3,18,32,64])\n",
    "        b_conv4 = biase_variables([64])\n",
    "        ret_conv4 = tf.nn.relu(conv2d(ret_conv3, W_conv4) + b_conv4)\n",
    "\n",
    "    #step6:定义第五个卷积层\n",
    "    with tf.name_scope(\"conv5\"):\n",
    "        W_conv5 = weight_variables([1,1,64,1])\n",
    "        b_conv5 = biase_variables([1])\n",
    "        ret_conv5 = conv2d(ret_conv4, W_conv5) + b_conv5\n",
    "\n",
    "    return ret_conv5\n",
    "\n",
    "#---------------------训练网络前的准备-----------------------#\n",
    "#申明输入数据和标签的占位符\n",
    "x = tf.placeholder(dtype=tf.float32, shape=[None,None, None, 1], name=\"x-input\")\n",
    "labels = tf.placeholder(dtype=tf.float32, shape=[None, 1], name=\"y-output\")\n",
    "\n",
    "#申明弃权的占位符\n",
    "keep_prop = tf.placeholder(dtype=tf.float32, name=\"kprob\")\n",
    "\n",
    "#创建分类模型\n",
    "ret = deepnn(x, keep_prop)\n",
    "#此时的返回值是 -1*1*1*1的， 为了得到方便运算的结果，这里将reshape\n",
    "y = tf.reshape(ret, shape=[-1,1])\n",
    "\n",
    "#定义损失函数\n",
    "with tf.name_scope(\"loss_function\"):\n",
    "    loss = tf.nn.sigmoid_cross_entropy_with_logits(logits=y, labels=labels)\n",
    "cost = tf.reduce_mean(loss)\n",
    "#定义训练模型（优化模型）\n",
    "with tf.name_scope(\"optimizor\"):\n",
    "    train = tf.train.AdamOptimizer(0.0005).minimize(cost)\n",
    "\n",
    "#定义验证模型精度的方法\n",
    "with tf.name_scope(\"accuracy\"):\n",
    "    y_hat = tf.nn.sigmoid(y)\n",
    "    accuracy_rate = tf.abs(y_hat - labels) < 0.5\n",
    "    accuracy_rate = tf.cast(accuracy_rate, dtype=tf.float32)\n",
    "accuracy = tf.reduce_mean(accuracy_rate)\n",
    "\n",
    "#--------------开始训练网络，并将训练结果保存到文件中---------------#\n",
    "saver = tf.train.Saver()\n",
    "sess = tf.Session()\n",
    "sess.run(tf.global_variables_initializer())  #初始化变量\n",
    "\n",
    "for i in range(20):\n",
    "    skip = 10\n",
    "    for k in range(0,1000,skip):\n",
    "        x_train = np.reshape(xs[k:k+skip], newshape=(-1, 40, 100, 1))\n",
    "        sess.run(train, feed_dict={x:x_train, labels:ys[k:k+skip], keep_prop:0.5}) # 训练模型\n",
    "    # if (i+1) % 10 == 0:\n",
    "    train_accuracy = sess.run(accuracy, feed_dict = {x: np.reshape(xs, (-1,40,100,1)), labels: ys, keep_prop:1.0})\n",
    "    print('step %d, train accuracy %g' % (i, train_accuracy))\n",
    "    saver.save(sess, \"./models/carDetect_model.ckpt\", global_step=i)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "测试部分："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import cv2\n",
    "#导入图片\n",
    "pic = cv2.imread(\"./TestImages/test-113.pgm\", 0)\n",
    "size = pic.shape\n",
    "\n",
    "img  = np.reshape(pic, (-1,size[0], size[1], 1))\n",
    "#利用上面训练好的网络，开始在新的图片中检测\n",
    "result = sess.run(ret, feed_dict={x:img})\n",
    "\n",
    "#将检测结果显示\n",
    "pt1 = np.array([result.argmax()//result.shape[2], result.argmax()%result.shape[2]]) * 4\n",
    "pt2 = pt1 + np.array([40, 100])\n",
    "\n",
    "pic_2 = cv2.rectangle(pic, (pt1[1], pt1[0]), (pt2[1], pt2[0]), 0, 2)\n",
    "\n",
    "plt.imshow(pic_2, \"gray\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.6"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
